package com.shujia

import scala.beans.BeanProperty

object Code16CaseClass {
  def main(args: Array[String]): Unit = {
    /**
     * 样例类：
     * 使用场景：
     *     对于数据库中存储表数据，一行数据实际上可以表示为一个对象，每个字段可以认为是一个对象的属性
     *     数据读取后，通常会将其包装成一个对象，所有的操作都是基于对象进行操作
     *     通过使用样例类可以对一些数据实例的对象进行包装，从而可以避免繁琐的代码编辑工作
     * 特点：
     *    ① 样例类实现了序列化特质（接口）
     *    ② 样例类实现了比较相关的特质 Product
     *    ③ 会重写默认的toString方法 如果直接打印 会输出对应的所有的属性值
     *    ④ 使用@BeanProperty注释给每个属性加上get、set（由var修饰的属性才会有）方法

     *
     */

    val oneStu = new OneStu("1500010101", "强义勇", 16, "男", "bigdata26")
    println(oneStu)
    println(oneStu.name)
    println(oneStu.getId)

    val oneStu2 = new OneStu("1500010101", "强义勇", 16, "男", "bigdata26")

    println(oneStu.equals(oneStu2))

  }
}


// @BeanProperty 一般修饰 var变量数据
case class OneStu(@BeanProperty var id: String, name: String, age: Int, gender: String, clazz: String)


//class OneStu(_id: String, _name: String, _age: Int, _gender: String, _clazz: String) extends Serializable {
//  @BeanProperty var id: String = _id
//  @BeanProperty var name: String = _name
//  @BeanProperty var age: Int = _age
//  @BeanProperty var gender: String = _gender
//  @BeanProperty var clazz: String = _clazz
//
////  override def toString(): Unit = {
////    println(id + "," + name + "," + age + "," + gender + "," + clazz)
////  }
//
//}